import axios from 'axios'

// const baseUrl = 'http://127.0.0.1:4523/m1/1445900-0-default'
const baseUrl = 'http://127.0.0.1:8888'
// const baseUrl = location.protocol + '//' + window.location.host
const timeout = 2000

const service = axios.create({
	baseURL: baseUrl, // 所有的请求地址前缀部分
	timeout: timeout, // 请求超时时间毫秒
	withCredentials: true, // 异步请求携带cookie
	headers: {
		// 设置后端需要的传参类型
		'Content-Type': 'multipart/form-data',
		// 'token': 'your token',
		// 'X-Requested-With': 'XMLHttpRequest',
	},
})

// 添加请求拦截器
service.interceptors.request.use(
	function (config) {
		// 在发送请求之前做些什么
		// console.log(config)
		return config
	},
	function (error) {
		// 对请求错误做些什么
		console.log(error)
		return Promise.reject(error)
	}
)

// 添加响应拦截器
service.interceptors.response.use(
	function (response) {
		// console.log(response)
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		// dataAxios 是 axios 返回数据中的 data
		const dataAxios = response.data
		// 这个状态码是和后端约定的
		// const code = dataAxios.code
		// if (code < 300)
		// 	return dataAxios.data
		// else
		// 	return dataAxios.message
		return dataAxios
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		console.log(error)
		return Promise.reject(error)
	}
)

export { baseUrl, service }

// class HttpRequest {
//   constructor (baseUrl) {
//     this.baseUrl = baseUrl
//     this.withCredentials = true
//     this.timeout = timeout
//   }

//   getConfig () {
//     const config = {
//       baseUrl: this.baseUrl,
//       header: {}
//     }
//     return config
//   }

//   interceptors (instance) {
//     // 添加请求拦截器
//     instance.interceptors.request.use(function (config) {
//       // 在发送请求之前做些什么
//       return config
//     }, function (error) {
//       // 对请求错误做些什么
//       return Promise.reject(error)
//     })

//     // 添加响应拦截器
//     instance.interceptors.response.use(function (response) {
//       // 对响应数据做点什么
//       return response
//     }, function (error) {
//       // 对响应错误做点什么
//       return Promise.reject(error)
//     })
//   }

//   request (options) {
//     const instance = axios.create()
//     options = Object.assign(this.getConfig(), options)
//     options.url = options.baseUrl + options.url
//     this.interceptors(instance)
//     return instance(options)
//   }
// }

// export default new HttpRequest(baseUrl)
